/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.thongtinsv.model;

import java.util.List;
import com.thongtinsv.entity.Sinhvien;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author tritruong
 */
public class SinhVienModel {
	
	public static List getDanhSachSinhVien() {
		Session session = HibernateHelper.getSession();
		org.hibernate.Transaction tx = session.beginTransaction();
		List<Sinhvien> lstSinhVien = session.createQuery("FROM Sinhvien").list();
		return lstSinhVien;
	}
	
	public static List getDanhSachSinhVien(String giaTri) {
		Session session = HibernateHelper.getSession();
		org.hibernate.Transaction tx = session.beginTransaction();
		Query query = session.createQuery("FROM Sinhvien as sinhvien WHERE "
				+ "str(sinhvien.maSinhVien) LIKE :giaTri "
				+ "OR lower(sinhvien.hoTen) LIKE lower(:giaTri) "
				+ "OR lower(sinhvien.lop.tenLop) LIKE lower(:giaTri)");
		query.setParameter("giaTri", '%' + giaTri + '%');
		List<Sinhvien> lstSinhVien = query.list();
		return lstSinhVien;
	}
	
	public static Sinhvien getSinhVien(String maSinhVien) {
		Session session = HibernateHelper.getSession();
		org.hibernate.Transaction tx = session.beginTransaction();
		Query query = session.createQuery("FROM Sinhvien as sinhvien " 
				+ "WHERE sinhvien.maSinhVien = :maSinhVien");
		query.setParameter("maSinhVien", maSinhVien);
		Sinhvien sinhvien = (Sinhvien) query.uniqueResult();
		
		return sinhvien;
	}
	
	public static boolean dangNhap(String maSinhVien, String matKhau) {
		Sinhvien sinhvien = SinhVienModel.getSinhVien(maSinhVien);
		return sinhvien != null && sinhvien.getMatKhau().toString().equals(matKhau);
	}
	
	public static boolean doiMatKhau(String maSinhVien, String matKhau) {
		if (maSinhVien == null) {
			return false;
		}
		
		Session session = HibernateHelper.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
			Sinhvien sinhVien = SinhVienModel.getSinhVien(maSinhVien);
			sinhVien.setMatKhau(matKhau);
            session.update(sinhVien);
            session.getTransaction().commit();
        } catch (RuntimeException e) {
            if (tx != null) {
                tx.rollback();
            }
            e.printStackTrace();
        }
		
		return true;
	}
}
